Methods And Devices For Maintaining Sessions Based On Presence Status Information

ABSTRACT

Sessions, such as on-line gaming sessions, are maintained by proxy agents on behalf of users even when the users are inactive. The agents, along with other components, form a novel “always-on” architecture that greatly reduces the time it takes to initiate and carry out sessions.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.11/393,900, filed Mar. 31, 2006 and set forth in full herein.

BACKGROUND OF THE INVENTION

There is presently an explosion in the number of people that areinvolved in playing on-line games over the Internet and other networks.These games allow for interactive play between one or more personswithin a game. In parallel with this development has come an increase inthe amount of signaling and information messages which must be sent overa network in order to enable interactive, on-line gaming to grow. Someof the changes which service providers of such networks face include:(a) how to make on-line gaming more personalized; (b) how to reduce anydelays caused by the network; (c) how to increase the interactive natureof such games; and (d) how to use their existing networks to achievethese goals without greatly increasing their costs.

As an example of (a), it is desirable to provide a user who wishes toplay an on-line game with the means of knowing when his or her bestfriends (sometimes referred to as “buddies”) are also on-line andavailable to play a game. Similarly, if a buddy is on-line and availableto play a game it is desirable to be able to initiate such a game veryquickly. In so doing, it is desirable to enable a service provider tooffer these features without the need to spend a lot of money upgradingor changing their existing network.

SUMMARY OF THE INVENTION

To achieve the desires stated above and others the present inventionprovides novel architectures that allow users to more easily and quicklycommunicate with one another to carry out all kinds ofcommunication-related sessions, including on-line gaming. In oneembodiment of the invention, an “always-on” architecture includes an“always-on” client that initiates an “always-on” session with an“always-on” proxy agent. Thereafter, the agent is operable to maintain asession on behalf of the client even if the client becomes inactive(e.g., a device that includes the client is no longer powered-on, etc.).Even though the client may be inactive, the agent may screen orotherwise filter information messages intended for the client. When theclient finally becomes active again the agent may forward screenedmessages to the client. Because the agent acts on behalf of the client,communication sessions can be initiated and resumed quickly.

To ensure that substantially little airlink time is used, in a furtherembodiment of the invention the client and agent may exchange messagesformatted as short binary messages or in another format that helpsconserve airlink and/or bandwidth.

The novel architecture may also include an “always-on lobby” as well. Inone embodiment of the invention a lobby may be operable to form andmaintain user groups, where each group may be associated with aparticular type of application (e.g., on-line games).

Each of the three components of the architecture, namely the client,agent and lobby may take the form of one or more firmware or softwareapplications that are stored on a computer readable medium, such as acompact disk, hard drive, memory, processor or some combination of thejust mentioned devices. These devices in turn may be incorporated withina larger wired or wireless device, such as a telephone, personal digitalassistant (PDA), gaming device, computer (desk-top or laptop), server,or some kind of management device, etc.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 depicts a block diagram of an architecture in accordance withembodiments of the present invention.

FIG. 2 depicts messaging and signaling events which occur during theauthentication and authorization of a user with a network according toembodiments of the present invention.

FIGS. 3 and 4 depict messaging and signaling flows between a user andanonymous players interested in playing a game using local matchingaccording to embodiments of the present invention.

FIG. 5 depicts messaging and signaling flows to initiate a game usingglobal matching according to embodiments of the present invention.

DETAILED DESCRIPTION OF THE INVENTION, WITH EXAMPLES

Referring now to FIG. 1 there is shown an architecture 1 in accordancewith one embodiment of the present invention. This architecture 1 may beused by a service provider to deliver one or more services in a mannerthat is faster than previously thought possible while requiring aminimal amount of changes or upgrades to the provider's network. Asshown, the architecture 1 comprises at least one always on client 2, atleast one always on proxy agent 3, and at least one always on lobby 4.Also shown are at least one other applications client 2 a (e.g., gamingclient), applications engine 3 (e.g., gaming engine) and one or moreoptional third party agents, such as agent 300. The client 2 andapplications client 2 a may comprise one or more software or firmwareprograms/applications that may be co-located and stored on a singlecomputer readable medium 20 or some sort which may be, in turn, embeddedwithin a larger device 200, such as a wired or wireless telephone, PDA,computer, gaming device, or a device which combines one or morefunctions (e.g., mail and voice messaging), etc. Alternatively, theclient 2 and applications client 2 a may be stored on more than onemedium or stored on separate mediums. Likewise, the agent 3 and lobby 4may also comprise one or more applications and may also be stored onsome kind of computer readable medium 30, 40, respectively, that arealso part of one or more larger devices, such as a server 34 or thelike. Though shown as one component 34, it should be understood that theagent 3 and lobby 4 may be separate components/applications and need notbe co-located. When stored on a computer readable medium, the featuresand functions of components 2, 2 a, 3, 4 and 5 may be carried out and/orcontrolled by code making up a respective application or the like.

While the discussion which follows will focus on on-line gaming, itshould be understood that the “always-on” architectures provided by thepresent invention may be used for any number of services; that is, theyare not limited to just gaming services, applications or activities.

In addition, it should be understood that a service provider may choseto implement an always-on architecture provided by the present inventionin any number of ways. For example, an architecture (such asarchitecture 1) may be implemented by a service provider such that it is“underneath” another communication application (e.g., gamingapplication). That is to say any third party communication applicationsthe service provider has available may lay on top of the always-onarchitecture.

We will discuss each of the elements of architecture 1 in the followingorder: the client 2; followed by the agent 3, followed by the lobby 4.

In one embodiment of the present invention, the client 2 may comprise aso called “thin component” that runs on a larger device such as awireless telephone, PDA, laptop computer, a device which combines morethan one function (email and voice), or the like.

When a device 200 which incorporates the client 2 (and/or applicationsclient 2 a) powers on, the client 2 is operable to execute aninitialization process. During this time period, the client 2communicates with a provisioning server or the like (not shown inFIG. 1) in order to receive the identity of the proxy agent 3 that hasbeen provisioned to (i.e., assigned to) the client 2. In accordance withone embodiment of the invention, the provisioning server may select anagent that is close to the client 2.

In one embodiment of the present invention, to begin a session, whethera gaming session or another type of communication session, the client 2is operable to forward a registration instruction to the so-identifiedproxy agent 3 in order to being a synchronization process thatestablishes an initial session between the client 2 and identified agent3. During this synchronization process the client 2 and agent 3 exchangesignaling messages with one another that may be formatted, for example,as short binary messages. Because the messages are so formatted, eachexchange requires substantially little airlink time.

After the client 2 and agent 3 have been synchronized, the agent 3 maybe further operable to forward information messages to the client 2.These messages may be used by the client 2 to generate one or more menusthat may be displayed on a display (not such in FIG. 1) of the device200. The information messages may also be formatted as short binarymessages. Each menu may in turn include one or more icons or indicators(e.g. soft or hard-keys) representing a number of values. For example,one icon may represent the games, applications or activities a user ofthe device 200 is involved in most often. Another icon may represent theindividuals (i.e., “buddies”) that the user communications with (e.g.,plays games with) most often. Still another icon may represent thoseindividuals who are presently available and/or desirable to communicatewith the user. The icons just mentioned are just a few of the many iconsand/or indicators that may be generated and displayed on a displayassociated with the device 200. A more detailed discussion of the typesof menus and icons that may be displayed on a device like device 200 maybe found in co-pending U.S. patent application Ser. No. 11/393,886,incorporated herein in full as if set forth herein in full.

The initialization, synchronization, signaling and information messageswhich are exchanged between the client 2 and agent 3 may be sentwirelessly or via a wired communication channel. Similarly, each of thecomponents shown in FIG. 1 may be wired or wireless devices.

As will be discussed in more detail below, the types of informationmessages that the agent 3 may send to the client 2 may vary depending onthe functions being carried out by the agent 3. For example, the agentmay be operable to monitor the communication habits of a user of device200. Based on information that the agent 3 collects during thismonitoring, the agent may process, analyze, and update (collectivelyreferred to as “process”) this information to identify patterns. Basedon these patterns the agent may forward messages on to the client 2 inorder to update one or more icons or menus, etc. that the user accessesin order to carry out an activity/application. In addition to monitoringthe habits of a user, the agent 3 may also be operable to monitor the“presence status” of the user of the device 200. By presence status ismeant, for example, whether or not the device 200 is powered up, orwhether the user is actively using the device 200 (e.g., depressing softkeys or selecting icons).

In further embodiments of the invention, the agent 3 may also monitorthe presence status of other users, such as the user of the device whichis associated with agent 300, and pass this information on to the device200 via the client 2. In yet additional embodiments of the invention theagent 3 may act as a proxy on behalf of the device 200 and client 2 evenwhen the device 200 is inactive. Before going further, when we refer tothe operation of device 200 it should be understood that many of theoperations are carried out and/or controlled by the clientapplication/component 2.

Backtracking somewhat, suppose after the client 2 and agent 3 aresynchronized the agent 3 forwards information messages to the client 2concerning those games that are available to be played by the user ofdevice 200 and those buddies presently available to play such a game.These messages are used to create one or more icons, such as an iconthat combines the games available and buddies available information intoone “buddies presently available to play a game” icon. This iconintuitively presents information to the user of device 200 withoutrequiring the user to “drill down” or navigate as the case may bethrough multiple levels of menus. Suppose further that sometime afterthe icon is displayed the user depresses or otherwise selects this icon(or key) in order to invoke or begin a game with those buddies who arepresently available. Upon the depression of a key or selection of anicon a signal is sent to the agent 3 from the client 2 that informs theagent 3 of the user's request to play a game (or, in general, to becomeactive in an application associated with the icon selected by the user).

Before going further, it should be understood that, in an alternativeembodiment of the invention, the agent 3 forwards information messagesto the client 2 only after receiving a signal indicating that the userhas selected an icon or depressed a key. When a user selects a key, forexample, this ensures that the user and device 200 are in an activestate. Only when a user or device 200 is in an active state is it reallynecessary for the agent 3 to forward information messages to, forexample, update the icons, etc., within menus displayed on the device200. That is, of the user is inactive (e.g., inattentive, not using thedisplay or keyboard of device 200, etc.) any updates sent by the agent 3would not be seen by the user anyway. Not only would the information beignored, but valuable airlink time would have been used unnecessarily.Thus, by waiting until the user or device 200 are in an active state,valuable airlink time is conserved.

Continuing with the example above, upon receipt of a signal indicatingthe user has selected an icon to being playing a game with the buddiesthat are presently available to play a game, the agent 3 is operable toprocess this signal and, if appropriate, forward a request signal on tothe agent(s) associated with each of the buddies. For example, such arequest may be forwarded to third party agent 300. Third party agent 300may respond in a number of ways. One response may indicate that itsassociated user (via an associated client) is not only available, butdesires to play a game with the user of device 200. Other responses mayindicate that the third party user does not desire to play a game, etc.In a similar fashion, the agent 3 may forward such requests to eachthird party agent associated with each buddy or individual that isassociated with the icon selected by the user of device 200. Uponreceiving the response from all of the third party agents, the agent 3is operable to determine which individuals have agreed to play a gamewith the user of device 200 (or, more generally, which individuals haveagreed to communicate or carry out an activity with the user).

In a further embodiment of the invention, the agent 3 may be operable toforward those identifies of third party users that have agreed to play agame with the user of device 200 to the lobby 4. Upon receipt of theseidentities, the lobby 4 is operable to generate a “group” associatedwith the game or application/activity. Once a group is formed the lobby4 is further operable to forward a request on to the game server 5 inorder to obtain game and server specific information necessary toinitiate the game requested by the user of device 200 (e.g., game serveridentity, session ID, etc.).

Before we discuss the operation of the lobby 4, however, more can besaid about the operation of the agent 3. In the example given above itwas assumed that the agent 3 was not aware of the presence status orpreferences of the third party users associated with the request to playa game. This need not be the case. In yet additional embodiments of theinvention, the agent 3 (in fact each agent) may be operable to receivethe presence status, preferences, and other information related to otherusers. This information can be stored or cached within the agent 3 ordelivered in a “just in time” manner (e.g., on-demand). With thisinformation in hand, the agent 3 may first process this information anddetermine whether a particular third party user is in fact presentlyavailable to play a game before forwarding a request signal on to theagent of such a third party user.

This ability to store the presence status and preferences of other usersmay greatly reduce the time required to form a group interested inplaying a game as well as reduce the amount of airlink time that isused. No longer must the user of device 200 wait for each third partyuser to respond to a request. Instead, the agent 3 may have knowledge ofa third party user's presence status (e.g., active/inactive) at the timethe agent 3 receives a signal from client 2 to initiate a game. If suchis the case, then the agent 3 may take alternative steps to inform thelobby 4 which of the invited third party users are actually available toplay a game. For example, the agent 3 may compare the request fromclient 2 with the presence states of all third party users in its memoryand, thereafter, only provide the lobby 4 with the identities of thosethird party uses whose presence status indicates they are trulypresently available to play a game.

In yet additional embodiments of the invention, the agent 3 iscontinuously collecting the presence status and preferences of both theuser of device 200 and one or more third party users. This informationmay be collected from third party agents, the third party users, or fromother sources, such as a presence server.

Throughout this discussion the word “session” is used. It should beunderstood that by session is meant the time period which elapsesbetween the time an application, feature or function is selected by, forexample, accessing an icon, key, etc. . . . on device 200 or agent 3 andthe time when the user/agent decides to terminate the application,feature or function. Many times the words “session” and “application”will be used interchangeably. In the context of our discussion this isacceptable in order to avoid making the explanations herein overlycomplicated. That said, it should be understood that a session is a timeperiod while an application is stored on a component in network 1. Withthis in mind, the present invention provides for alternative embodimentswhere the agent 3 acts as a proxy agent on behalf of the client 2 andits associated user. [0031.] Because the agent 3 may collect informationregarding the communication habits (e.g., gaming activity), presencestatus and preferences (to name just a few examples of such collectedinformation) associated with the user of device 200 and other users, theagent 3 is prepared to act on the user's behalf without necessarilycommunicating with the user. This ability makes it possible to reducethe amount of signaling and other messages that are exchanged betweenthe agent 3 and client 2 which in turn, conserves valuable airlink time.

Backtracking yet again, in a further embodiment of the invention, priorto communicating with a client 2 the agent 3 is initially operable toregister its identify with a provisioning server (not shown in FIG. 1).In response, the server assigns the agent 3 to a client, in this caseclient 2. The provisioning server keeps track of the client/agentassignments among other things. Upon registering with the server andbeing assigned a client, the agent 3 is operable to receive storedinformation associated with the user of client 2 and device 200 (e.g., aprofile of the user's communication activity, preferences, habits,patterns of usage, etc.), Because this information is stored by theserver, the agent which serves the client 2 may be changed as neededfrom time to time. It should be noted, however, that during any giveninstance of time, a single agent is assigned to a single client.

In accordance with the present invention, the agent 3 may act as a proxyfor the client 2 and its associated user in many different instances,only a few of which will be discussed herein. Any attempt to provide anexhaustive list of instances would require a substantially longerdiscussion and is not necessary for an understanding of the presentinvention. We have mentioned above an example of one type of sessionwhere the agent 3 acts as a proxy, namely, the ability of an agent todetermine which third party users are presently available to play a gamewith a user without communicating with the client 2 or device 200. Ingeneral, the agent 3 may be operable to carry out many of the featuresand functions of the client 2 and device 200 without first communicatingwith either. For example, the agent 3 may be programmed or otherwisedesigned to act as a proxied receiver or transmitted of informationmessages to/from other third party users. To the extent the agent 3 hasbeen given the capability of device 200, and may act on its behalfwithout exchanging signaling messages, etc., with the device, this maygreatly conserve airlink time and speed up communications between theuser of device 200 and another third party user. No longer must thethird party wait for the exchange of signaling messages followed byinformation messages to receive a response back from the user. Instead,such a response may be generated by the agent 3.

Up until now our discussion has assumed that the client 2, device 200and/or user is active (e.g., accessing the display of device 200, etc.).In further embodiments of the invention the agent 3 may act as a proxyagent even when the client 2, device 200 and/or its user are inactive.

For example, when the device 200 powers down the agent 3 is nonethelessoperable to maintain a previously initiated session. Such a session may,for example, involve one or more other third party devices/users. Duringthe time period when the device 200 is inactive the agent 3 may beoperable to carry out many of the functions and features of device 200on its behalf (and its associated user of source) as well as carry outits own presence status monitoring discussed above and below. Inalternative embodiments of the invention, the agent 3 may also beconfigured (e.g., programmed, or designed) to act as a proxy for theuser in a game session the user had previously been involved in. Thoseknowledgeable in the art of gaming may refer to this capability as“roboting”.

Another example of acting as a proxy agent is as follows. Supposeinformation messages intended for the user of device 200 are sent whilethe device 200 is powered down. Instead of needlessly attempting toforward these on to the device 200 by first sending a signaling messageto determine whether the device 200 is powered on (which is how manyexisting techniques work), the agent 3 is operable to intercept, filteror otherwise screen (collectively referred to as “screen”) thesemessages. Because the agent 3 is capable of monitoring the presencestates of device 200 etc., it knows in advance whether or not the device200 is active (e.g., powered up/on). Thus, upon receipt of a messageintended for the user of device 200 the agent 3 may be operable toforward the message on to the device 200 only if the device 200 or useris active, for example. This ability to act on behalf of the user ofdevice 200 while the user is inactive combined with the otherfeatures/functions of the agent 3 discussed above may greatly reduce thetime it takes to respond to a message from a third party, not to mentionthat this may also greatly conserve the airlink time or bandwidthcapacity of a service provider's network.

Because it is operable to screen messages, agent 3 may also be operableto act as a spam filter, screening out those messages the agent 3determines to be spam or, alternatively, malicious messages.

In addition to screening messages during a proxied session, the agent 3may also store messages intended for the device 200. In accordance withyet another embodiment of the present invention, once the device 2powers up or the user otherwise becomes active (e.g., makes a selectionusing the display or keyboard associated with device 200) the agent 3may be operable to forward messages the agent 3 has stored or cached onbehalf of the device 200 while the device or user was inactive.

In addition to forwarding stored messages, once the device 200 becomesactive again the agent 3 may be operable to forward information toupdate (or create) one or more of the keys, icons or menus displayed on,or otherwise associated with a keyboard, of device 200. For example, theagent 3 may forward updated presence status information for a user'sbuddies or for anonymous individuals that are presently available toplay a game with the user of device 200. The forwarded information mayalso include those games or applications that are now available to beaccessed by the user. Though the device 200 may be operable to createand forward the icons, menus, etc. itself, alternatively, the agent 3may be operable to create formatted messages that can then be used bythe device 200 to create or update an icon, key, menu without muchprocessing by the device 200.

With respect to the roboting features provided by the present invention,the agent 3 may be operable to carry out a set of instructions on behalfof the user of device 200 that were provided by the user of device 200prior to its becoming inactive, for example.

In one of the examples discussed above, the agent 3 forwards the lobby 4the identities of those third party users who are presently available toplay a game with the user of device 200. We now continue with thisexample in order to point out some of the features and functions oflobbies provided by the present invention, such as lobby 4.

In general, lobbies provided by the present invention carry out: (1)group formation and management, and (b) matchmaking activitiesassociated with sessions. A lobby, such as lobby 4, may be operable tomaintain a plurality of groups. For example, the lobby 4 may form andmanage groups that contain: (1) those users who are interested inplaying a particular game or games; (2) those users who have played aparticular game or games; and (3) those users who have the same skilllevel in a particular game or games, to give just a few examples of thetypes of groups that can be created and managed by the lobby 4.

In a further embodiment of the invention the lobby 4 may use itsmatchmaking functions to determine whether the third party users, whoseidentities it has received from agent 3, should indeed be made a part ofthe same group. Perhaps the user of device 200 has mistakenly requestedsomeone who does not have the same skill level as the user to join thegame. The lobby 4 may be operable to compare the skill level of eachidentified user with the skill level contained in the request to ensurethis requirement is met. The lobby 4 may carry out this comparison bycomparing skill levels it has stored with the skill level in therequest. This comparison is just one example of the matchmakingcapabilities of the lobby 4.

Assuming, for the sake of the example we began earlier, that uponreceiving each identity of the invited third party users the lobby 4determines through its matchmaking functions that each user is qualifiedto play a game or otherwise communicate with the user of device 200.Thereafter, the lobby 4 is operable to form a group that consists of allof the identified third party users along with the user of device 200.Having now formed and stored a group, the lobby is further operable toinvoke its management functions in order to send a group formationindication to the agent 3 which is relayed on to the client 2. In thismanner, the user of device 200 may receive an icon, key or some otherkind of indication/indicator that a group has been formed to play agame, for example.

In addition to interfacing with the agent 3, the lobby 4 may also invokeits management functions to interface with an applications server, suchas game engine/server 5, and other lobbies (not shown in FIG. 1). Thelobby 4 may interface with the server 5 in order to request, andreceive, information and signals (e.g., a game session ID) related toinitiating, maintaining and terminating an application/session thatinvolves the server 5, such as a game. The lobby 4 may forward theapplication/session information to the agent 3 which relays thisinformation on to the user of device 200 as well as on to the agentsassociated with the third party users that are included in the groupformed by the lobby 4. Alternatively, if a third party user and/or heragent are not associated with the lobby 4, the lobby 4 may forward theapplication/session information on to the lobby that is associated withthe third party user and/or her agent so that the third party user willbe able to participate in the game or other application/activity.

Upon receiving the application/session information, the client 2 may beoperable to communicate with the applications client 2 a in order torequest that the client 2 a create a link with the server 5 to begin theapplication (e.g., being the game). In a similar manner, each thirdparty client that receives the application/session information invokesits own applications client to contact the server 5 (or a serverassociated with a game session) in order to begin participating in thegame.

As indicated earlier on, the lobby 4 (as well as the client 2,applications client 2 a and agents 3 and 300) may comprise one or moresoftware or firmware applications that are stored on some sort ofcomputer readable medium using known methods, including by downloadingcomponents on to a medium. In alternative embodiments of the invention,the matchmaking and management functions, as well as other functions, ofthe lobby 4 may be separated into different sub-components/applications.For example, the lobby 4 may comprise: (i) a session managementsub-component 4 a; (ii) a communications server sub-component 4 b; and(iii) a comparison/matchmaking sub-component 4 c.

In one embodiment of the present invention, the session managementsub-component 4 a may be operable to provide users with informationconcerning a given application/session, such as when a session hasstarted or can begin (e.g., the game session ID mentioned beforehand).The session manager may also be operable to govern the participation ofusers in a game by deleting existing users, or adding new ones, whenappropriate to a game/activity/application.

In accordance with the present invention, the communication serversub-component 4 b may be operable to relay information messages betweenone or more clients/users in a group that are participating in, or whohad been participating, in a session. These messages may comprise voice,text, video and/or multimedia content for example.

Again, though the primary type of application/session discussed hereinis a game, it should be understood that many different types ofapplications/sessions, such as voice conferencing or the like, may behandled by the techniques of the present invention.

The last sub-component mentioned above was the matchmaking sub-component4 c, whose functions we have discussed before. One other function thatmay be carried out by the sub-component is the addition/deletion of oneor more third party users from a session based on whether or not eachuser is active or inactive (i.e., their presence status). This helpsthose still active informed of the status of all the other users, forexample.

For the most part the examples above focus on third party users that areknown to the user of device 200. It should be understood that thefeatures and functions of the agent 3, lobby 4 and client 2 may also beused to invite, identify, qualify or otherwise add/delete third partyusers that are unknown to the user of device 200 (though they may beknown to the lobby 4, for example). These users may be referred to asanonymous users.

For example, the client 2 may send a request to the agent 3 to inviteany user that has a certain skill level to join a game without providingthe agent 3 with the identity of the invitees. The agent 3 may refersuch an invitation to the lobby 4 which may consult its stored groups oruser profiles to identify qualified anonymous users. Once one or moreusers are identified by the lobby 4 the lobby may form a groupconsisting of one or more of the identified individuals and the user ofdevice 200 who initiated the request. The lobby 4 may select theindividuals in any number of ways, including randomly, or according tosome order.

It may occur that the lobby 4 cannot form a group that meets therequirements of a request initiated by the user of device 200. When thisoccurs the local lobby 4 (“local” because it is associated with agent 3and client 2) may forward the requirements of the request on to one ormore, third party or remote global lobbies (not shown in FIG. 1). Eachglobal lobby then attempts to identify users (and their profiles) thathave attributes which satisfy the requirements of the request. Eachglobal lobby has knowledge of many more users and their preferences,etc., that may satisfy the request than the local lobby 4. Anidentification of some sort of each user is sent to the locally lobby 4by the respective global lobby. Thereafter, the local lobby 4 may form agroup.

For the sake of completeness the reader may wish to consult FIG. 2through 5 which depict messaging and signaling flows that occur betweenthe components shown in FIG. 1 according to the embodiments of thepresent invention.

Although we will not discuss the signaling and message flows depicted inthese figures in detail, it should be understood that these flows arejust some of the flows between components of the present invention.Further details concerning the messages exchanged between the componentsshown in FIG. 1, their formats and content may be found in co-pendingU.S. patent application Ser. No. 11/393,885, incorporated herein in fullas if set forth in full herein.

The above discussion has attempted to set forth some examples of thefeatures and functions of the present invention. The true scope of thepresent invention, however, is set forth in the claims that follow.

We claim:
 1. A method for forming one or more groups associated with oneor more on-line gaming sessions comprising: receiving one or moreidentities of one or more third party users; determining theavailability of the identified third party users; comparing profiles ofthe identified and available third party users, with attributes of arequest to initiate an on-line gaming session of a game by a user, todetermine the gaming skill level of the third party users; forming agaming group containing those third party users that are not currentlyinvolved in a gaming session of the game, and have the substantiallysame gaming skill level as that required by the request from thecompared, identified and available users along with the user thatinitiated the request; and initiating the on-line gaming session of thegame for the formed gaming group.
 2. The method as in claim 1 furthercomprising: forwarding requirements of the request on to a third partylobby to identify the third party users that satisfy the request;receiving an identification of each third party user that satisfies therequest; and forming the gaming group containing those third party usersthat are not currently involved in a gaming session of the game andsatisfy the request along with the user that initiated the request. 3.The method as in claim 1 further comprising: monitoring a presencestatus of a client device associated with the user; and maintaining anon-line gaming session on behalf of the user even when the statusindicates the client device is inactive.
 4. The method as in claim 3further comprising forwarding messages to the client device when theclient device is active, wherein the messages were received when theclient device was inactive.
 5. The method as in claim 4 wherein themessages are forwarded wirelessly.
 6. The method as in claim 3 furthercomprising forwarding messages to the client device in order to updateone or more indicators, wherein at least one of the indicators isassociated with presence status information of the one or more thirdparty users.
 7. The method as in claim 1 further comprising: forwardingthe request from the client device, to initiate an on-line gamingsession, to a proxy agent; and receiving messages at the client devicefrom the proxy agent during an active presence state, wherein themessages were originally received by the agent when the client devicewas inactive.
 8. The method as in claim 7 further comprising exchangingsignaling messages between the client device and the proxy agent usingshort binary messages.
 9. The method as in claim 7 wherein the requestis forwarded wirelessly from the client device to the proxy agent. 10.The method as in claim 7 further comprising receiving one or moremessages from the agent at the client device, wherein at least one ofthe messages is used to update at least one indicator associated withpresence status information of the one or more third party users.
 11. Asystem for forming one or more groups associated with one or moreon-line gaming sessions comprising: a memory storing instructions toimplement a lobby, the lobby operable to: receive one or more identitiesof one or more third party users; determine the availability of theidentified third party users; compare profiles of the identified andavailable third party users with attributes of a request to initiate anon-line gaming session of a game by a user, to determine the gamingskill level of the third party users; forming a gaming group containingthose third party users that are not currently involved in a gamingsession of the game, and have the substantially same gaming skill levelas that required by the request from the compared, identified andavailable users along with the user that initiated the request; andinitiate the on-line gaming session of the game for the formed gaminggroup.
 12. The system as in claim 11 wherein the memory comprisesinstructions further operable to: forward requirements of the request onto a third party lobby to identify the third party users that satisfythe request; receive an identification of each third party user thatsatisfies the request; and form the gaming group containing those thirdparty users that are not currently involved in a gaming session of thegame, and satisfy the request along with the user that initiated therequest.
 13. The system as in claim 11 further comprising: a proxyagent, the agent operable to monitor a presence status of a clientdevice associated with the user; and maintain an on-line gaming sessionon behalf of the user even when the status indicates the client deviceis inactive.
 14. The system as in claim 13, wherein the proxy agent isfurther operable to forward messages to the client device when theclient device is active, wherein the messages were received when theclient device was inactive.
 15. The system as in claim 14, wherein themessages are forwarded wirelessly.
 16. The system as in claim 13,wherein the proxy agent is further operable to collect presence statusinformation concerning the one or more third party users even when theclient device is inactive.
 17. The system as in claim 13, wherein theproxy agent is further operable to forward messages to the client devicein order to update one or more indicators, wherein at least one of theindicators is associated with presence status information of the one ormore third party users.
 18. The system as in claim 11 furthercomprising: a client device, the device operable to: forward the requestto a proxy agent; and receive messages from the proxy agent during anactive presence state, wherein the messages were originally received bythe agent when the client device was inactive.
 19. The system as inclaim 18, wherein the device is further operable to exchange signalingmessages with the proxy agent using short binary messages.
 20. Thesystem as in claim 18, wherein the device is operable to forward therequest wirelessly to the proxy agent.
 21. The system as in claim 18,wherein the device is further operable to receive one or more messagesfrom the agent, wherein at least one of the messages is used to updateat least one indicator associated with presence status information ofthe one or more third party users.